With the rapid growth of internet traffic load and the development of optical-fiber communication technology, the requirements on switches are getting more and more in order to avoid switches becoming bottlenecks for data transmission. For example, for a conventional input-buffering switch, blocking probability is relatively high, compared to an output-buffering one. The output buffering, however, is difficult to be achieved under the current hardware environment where the maximum transmission speed inside the switch is limited. As known, for output buffering, the transmission rate inside the switch has to be several times of that of the external transmission line. On the other hand, in order to minimize the head-of-line blocking effect of an input-buffering switch, various architectures were developed to solve this problem. Unfortunately, these architectures required complicated switching control units. Further, it is preferred that a switch is applicable to data transmission situations of asynchronous input data stream and variable packet length. In other words, the synchronizing, segmenting and reassembling operations of packets are omitted so as to comply with the requirements on high capacity and high quality for applying to an optical fiber network in the future. Self-routing is another issue for designing a switch. By self-routing, the central control unit for programming is no longer required.